linux c 线程同步的三种方法

您所在的位置:网站首页 Linux 信号量线程同步 linux c 线程同步的三种方法

linux c 线程同步的三种方法

2023-07-30 14:29| 来源: 网络整理| 查看: 265

目录

一、互斥锁(mutex)

二、条件变量(cond)

三、信号量(sem)

线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。

一、互斥锁(mutex)

通过锁机制实现线程间的同步。

1.初始化锁。在Linux下,线程的互斥量数据类型是pthread_mutex_t。在使用前,要对它进行初始化。 静态分配:pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 动态分配:int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutex_attr_t *mutexattr);

2.加锁。对共享资源的访问,要对互斥量进行加锁,如果互斥量已经上了锁,调用线程会阻塞,直到互斥量被解锁。 int pthread_mutex_lock(pthread_mutex *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex);

3.解锁。在完成了对共享资源的访问后,要对互斥量进行解锁。 int pthread_mutex_unlock(pthread_mutex_t *mutex);

4.销毁锁。锁在是使用完成后,需要进行销毁以释放资源。 int pthread_mutex_destroy(pthread_mutex *mutex);

#include #include #include #include #include "iostream" using namespace std; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; int tmp; void* thread(void *arg) { cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3